/**
 * Iconify 图标分析相关的类型定义
 */

export interface IconifyIcon {
  /** 图标名称，如 'mdi:home' */
  name: string;
  /** 图标集合前缀，如 'mdi' */
  prefix: string;
  /** 图标标识符，如 'home' */
  icon: string;
  /** 使用该图标的文件路径列表 */
  files: string[];
  /** 在代码中使用的总次数 */
  usageCount: number;
}

export interface IconifyUsageStats {
  /** 所有图标的使用统计 */
  icons: Map<string, IconifyIcon>;
  /** 按集合分组的图标统计 */
  collections: Map<string, Set<string>>;
  /** 总图标数量 */
  totalIcons: number;
  /** 总使用次数 */
  totalUsage: number;
  /** 分析的文件数量 */
  totalFiles: number;
  /** 包含图标的文件数量 */
  filesWithIcons: number;
}

export interface IconifyAnalysisOptions {
  /** 是否递归扫描子目录 */
  recursive?: boolean;
  /** 文件扩展名过滤 */
  extensions?: string[];
  /** 忽略的目录 */
  ignoreDirs?: string[];
  /** 输出格式 */
  outputFormat?: 'js' | 'ts' | 'json';
  /** 是否生成类型定义 */
  generateTypes?: boolean;
}

export interface IconifyDataOutput {
  /** 版本信息 */
  version: string;
  /** 生成时间 */
  generatedAt: string;
  /** 图标集合数据 */
  collections: Record<string, {
    prefix: string;
    icons: string[];
    count: number;
  }>;
  /** 完整的图标列表 */
  icons: string[];
  /** 使用统计 */
  stats: {
    totalIcons: number;
    totalCollections: number;
    totalUsage: number;
    filesWithIcons: number;
  };
}

export interface VueFileIconMatch {
  /** 匹配到的图标名称 */
  icon: string;
  /** 在文件中的位置 */
  position: {
    line: number;
    column: number;
  };
  /** 匹配的类型 */
  type: 'component' | 'class' | 'attribute' | 'string';
  /** 匹配的上下文 */
  context: string;
}